package com.share.common.logback;

import ch.qos.logback.classic.pattern.ClassicConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
import lombok.extern.slf4j.Slf4j;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
 * 作者  孙艳强
 * 用法 ：在logback中定义如下语句
 * <conversionRule conversionWord="IP" converterClass="com.share.common.logback.IpConverter"/>
 * <p>
 * 使用  %IP  获取变量的值  ----------- 切记是%IP
 */
@Slf4j
public class IpConverter extends ClassicConverter {

    public static String ip;

    static {
        try {
            InetAddress i = InetAddress.getLocalHost();
            ip = i.getHostAddress();
            System.err.println("slf4j获取机器,ip=" + ip);
        } catch (UnknownHostException e) {
            log.error("slf4j获取ip异常", e);
        }
    }

    /**
     * 每输出一次日志，这个convert方法就执行一次
     *
     * @return ip 地址
     */
    @Override
    public String convert(ILoggingEvent event) {
        return ip;
    }
}
